package com.ym.excel.utils;

import java.util.List;
import java.util.Map;

/**
 * @Author: smuswc
 * @Date: 2018/2/7 14:59
 * @Description:
 */
public interface ExcelOperatorInte {

    String writeExcel(List<List<String>> data) throws Exception;

    String writeExcel(String path, List<List<String>> data) throws Exception;

    String writeExcel(String path, String fileName, List<List<String>> data) throws Exception;

    String writeExcel(String path, String fileName, String sheetName, List<List<String>> data) throws Exception;

    String writeExcel(String path, String fileName, String sheetName, List<String> title, List<List<String>> data) throws Exception;

    String writeExcel(String path, String fileName, String sheetName, List<String> title, List<List<String>> data, Integer[] hideColumn) throws Exception;


    /**
     * 读取Excel 默认第一行作为Map key值
     *
     * @param path 文件路径
     * @return 返回内容列表
     */
    List<Map<String, String>> readExcel4Result(String path) throws Exception;

    /**
     * 读取Excel 默认第一行作为Map key值
     *
     * @param path      文件路径
     * @param sheetName sheet 页名称 默认为第一个sheet页
     * @return 返回内容列表
     */
    List<Map<String, String>> readExcel4Result(String path, String sheetName) throws Exception;


    /**
     * 读取Excel 指定title, Excel 内容均为数据结果
     *
     * @param path      文件路径
     * @param sheetName sheet 页名称 默认为第一个sheet页
     * @param title     返回map key值。需对应Excel列
     * @return 返回内容列表
     */
    List<Map<String, String>> readExcel4Result(String path, String sheetName, List<String> title) throws Exception;

    /**
     * 读取Excel 默认第一行作为 title
     *
     * @param path     文件路径
     * @param hasTitle 是否需要返回title 默认为ture。若为 false 则认为Excel 内容均为要返回的数据
     * @return 返回列表 List1 为title, List2 为数据内容
     */
    List<List<Object>> readExcel4Result(String path, boolean hasTitle) throws Exception;

    /**
     * 读取Excel 默认第一行作为 title
     *
     * @param path      文件路径
     * @param sheetName sheet 页名称 默认为第一页
     * @param hasTitle  是否需要返回title 默认为ture。若为 false 则认为Excel 内容均为要返回的数据
     * @return 返回列表 List1 为title, List2 为数据内容
     */
    List<List<Object>> readExcel4Result(String path, String sheetName, boolean hasTitle) throws Exception;

    /**
     * 删除指定文件
     *
     * @param path
     * @return
     * @throws Exception
     */
    boolean deleteFile(String path) throws Exception;

}
